Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including volatile and non-volatile memory. Volatile memory can require power to maintain its data and includes random-access memory (RAM), dynamic random access memory (DRAM), and synchronous dynamic random access memory (SDRAM), among others. Non-volatile memory can provide persistent data by retaining stored data when not powered and can include NAND flash memory, NOR flash memory, phase change random access memory (PCRAM), resistive random access memory (RRAM), and magnetic random access memory (MRAM), among others.
Memory devices can be combined together to form a solid state drive (SSD). An SSD can include non-volatile memory, e.g., NAND flash memory and/or NOR flash memory, and/or can include volatile memory, e.g., DRAM and/or SRAM, among various other types of non-volatile and volatile memory. Flash memory devices can include memory cells storing information in a charge storage structure such as a floating gate, for instance, and may be utilized as non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption.
An SSD can be used to replace hard disk drives as the main storage volume for a computer, as the solid state drive can have advantages over hard drives in terms of performance, size, weight, ruggedness, operating temperature range, and power consumption. For example, SSDs can have superior performance when compared to magnetic disk drives due to their lack of moving parts, which may avoid seek time, latency, and other electro-mechanical delays associated with magnetic disk drives.
Memory is utilized as volatile and non-volatile data storage for a wide range of electronic applications. Non-volatile memory may be used in, for example, personal computers, portable memory sticks, digital cameras, cellular telephones, portable music players such as MP3 players, movie players, and other electronic devices. Memory cells can be arranged into arrays, with the arrays being used in memory devices.
Memory cells in an array architecture can be programmed to a desired state. For instance, electric charge can be placed on or removed from the charge storage structure, e.g., floating gate, of a memory cell to program the cell to a particular state. For example, a single level (memory) cell (SLC) can be programmed to one of two different states, each representing a different date value, e.g., a 1 or 0. Some flash memory cells can be programmed to one of more than two states corresponding to particular data values, each state representing a different data value, e.g., 1111, 0111, 0011, 1011, 1001, 0001, 0101, 1101, 1100, 0100, 0000, 1000, 1010, 0010, 0110, or 1110. Such cells may be referred to as multi state memory cells, multiunit cells, or multilevel (memory) cells (MLCs). MLCs can provide higher density memories without increasing the number of memory cells since each cell can store more than one digit, e.g., more than one bit of data.
A hard read is an operation to determine hard information, such as by comparing the threshold voltage of a memory cell, e.g., flash memory cell, to reference voltages delineating ranges of voltages corresponding to particular states. Soft data can be data other than the determination that a memory cell is, for example, charged to within a particular voltage level range, e.g., corresponding to a particular state. For example, a soft read can be used to more precisely determine the actual voltage level (within a finer granularity than the hard read) to which a memory cell is charged, so as to enable evaluating the voltage level with respect to voltage level range boundaries. In this manner soft data can indicate (or be used to indicate) a confidence level associated with the hard data. Error-correcting code schemes can perform much better via use of soft data. However, a soft read can be time consuming, and therefore can impact memory throughput.